package br.com.ss.enumeration;

import java.io.UnsupportedEncodingException;

import br.com.ss.utilserver.Message;

public enum EMensageError {

	// *************  DAO ************
	
	NAO_FOI_POSSIVEL_ALTERAR_("D0001"),
	ERRO_AO_EXECUTAR_("D0002"),
	NAO_FOI_POSSIVEL_EXCLUIR_("D0003"),
	NAO_FOI_POSSIVEL_INCLUIR_("D0004"),
	NAO_FOI_POSSIVEL_PROCESSAR_("D0005"),
	NAO_FOI_POSSIVEL_CARREGAR_("D0006"),
	
	REGISTRO_NAO_ENCONTRADO_("D0100"),
	OBJETO_NAO_SALVO_("D0101"),
	NAO_ENCONTRADO_PARA_("D0102"),
	NAO_ENCONTRADO_("D0103"),
	OBJETO_SENDO_UTILIZADO("D0104"),
	MAIS_DE_UM_ENCONTRADO_PARA("D0105"),
	PARAMETRO_OBRIGATORIO_("D0106"),
	NAO_RECUPERAR_DENATRAN("D0107"),
	INVALIDO_("D0108"),
	NAO_E_POSSIVEL_AUTENTICAR_EM_SITUACAO_("D0109"),
	NAO_FOI_POSSIVEL_REGISTRAR_("D0110"),
	TAREFA_JA_AGENDADA("D0111"),
	NAO_FOI_POSSIVEL_REENVIAR_("D0112"),
	
	
	
	
	// *************  EJB ************
	
	CODIGO_DUPLICADO("E0100"),
	NAO_FOI_POSSIVEL_ESTABELECER_COMUNICACAO_("E0101"),
	DUPLICADAS_("E00102"),
	QUANTIDADE_INFORMADA_DIVERGENTE_("E0103"), 
	EXISTEM_INVALIDOS_("E0104"), 
	NAO_PODE_SER_NULO_("E0105"), 
	VALOR_DEVE_SER_HEXADECIMAL_("E0106"), 
	VALOR_DEVE_POSSUIR_CARACTERES_("E0107"), 
	CLASSE_IDENTIFICACAO_DEVE_SER_IGUAL_("E0108"), 
	VALOR_DEVE_SER_IGUAL_A_("E0109"), 
	TAG_MODEL_PE_DIFERENTE_DO_MODELO_INFORMADO_("E00110"),
	JA_CADASTRADA_("E00111"),
	JA_CADASTRADAS_("E00112"),
	QUANTIDADE_REGISTRADA_DIFERENTE_CADASTRADA_("E00113");
	

	private String codigo;

	private EMensageError(String codigo) {
		this.codigo = codigo;
	}

	public String getCodigo() {
		return codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	public String getValue(Object[] params) {
		return Message.getMessageErro(this.codigo, converteParametrosUTF8(params));
	}

	public String getValue() {
		return Message.getMessageErro(this.codigo, null);
	}

	/**
	 * Método responsável pela conversão de String para encoding UTF8. Torna caracteres especiais legíveis na tela
	 * 
	 * @param texto
	 * @return String
	 * @author Rodrigo Carvalho
	 * 
	 */
	public static String utf8Converter(String texto) {
		byte array[];
		String novaString = "";
		try {
			array = texto.getBytes("UTF-8");
			novaString = new String(array, "ISO-8859-1");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return novaString;
	}

	/**
	 * Método responsável por pegar os parâmetros enviados para as msg e mandar converter os que são String.
	 * 
	 * @param params
	 * @return Object[]
	 * @author Rodrigo Carvalho
	 * 
	 */
	private static Object[] converteParametrosUTF8(Object[] params) {
		for (Object ob : params) {
			if (ob instanceof String)
				ob = utf8Converter((String) ob);
		}

		return params;
	}

}
